#pragma once

class CGeneralClass
{
public:
	CGeneralClass(void);
	~CGeneralClass(void);
};

//class CTryThrow;
#define BeginTry() CTryThrow tryHandler;try{
#define EndTry() tryHandler.m_Ok=TRUE;}catch(...){tryHandler.m_Ok=FALSE;
#define	Finally() }
#define BASSERT(val) tryHandler.AssertVal((val))
#define GetResult() tryHandler.m_Ok
#define SetResult(val) tryHandler.m_Ok=(val)

class CTryThrow
{
public:
	template <class T> void AssertVal(T val)
	{
		m_Ok=val?TRUE:FALSE;
		if(!m_Ok)
			throw 0;
	}

	void AssertVal(HRESULT val)
	{
		m_Ok=(val>=0);
		if(!m_Ok)
			throw 0;
	}
	BOOL m_Ok;
};

//class CString2
class CString2
{
};

//Struct
class MDC
{
public:
	~MDC();
	CDC DC;
	CBitmap Bitmap;
};